package nyist.media.service;

import nyist.media.entity.admin.Admin;
import nyist.media.enums.RepairStatus;
import nyist.media.page.AppPage;
import nyist.media.vo.RepairRecordVO;
import org.springframework.data.domain.PageRequest;

/**
 * 维修单内容
 *
 * @author dcf
 * @date 2019/3/19
 */
public interface RepairOrdersService {

    /**
     * 分页查询维修单记录
     *
     * @param pageRequest 分页对象
     * @param status      维修单状态 0 ：待维修 1：维修中 2：维修完成 3：被驳回
     * @return 维修单列表
     */
    AppPage<RepairRecordVO> findPageByStatus(PageRequest pageRequest, RepairStatus status);

    /**
     * 驳回维修单
     * @param id 维修单ID
     * @param rejectedReason 驳回原因
     */
    void rejectedOrder(Long id, String rejectedReason);

    /**
     * 提交维修单
     * @param id 维修的教室编号
     * @param txt 维修单内容
     * @param currentInfo 当前登录用户
     */
    void createRepairOrders(Long id, String txt, Admin currentInfo);

    /**
     * 删除维修单
     * @param id 维修单ID
     */
    void deleteById(Long id);

    /**
     * 查询我的维修单
     * @param pageRequest 分页对象
     * @param currentInfo 当前登录对象
     * @return 我的维修单列表
     */
    AppPage<RepairRecordVO> findMyPage(PageRequest pageRequest, Admin currentInfo);

    /**
     * 标记维修单完成
     * @param id 维修单
     * @param currentInfo 当前对象
     */
    void finishedOrders(Long id, Admin currentInfo);

    /**
     * 分派维修单
     * @param id 维修单ID
     * @param repairIds 维修员
     */
    void deliverOrders(Long id, Long repairIds);

    /**
     * 查询维修单详情
     * @param id 维修单ID
     * @return 维修单对象
     */
    RepairRecordVO findOne(Long id);

    /**
     * 受理维修单
     *
     * @param id         维修单ID
     * @param repairName 维修人姓名
     */
//    void handlerOrder(Long id, String repairName);
}
